import { router } from "@/router";
import { useUserStore } from "@/store";
import axios, { AxiosError } from "axios";
import { ElMessage } from "element-plus";

const instance = axios.create({

  // baseURL: "http://xue.cnkdl.cn:9082/mall-admin",
  baseURL: "http://120.24.64.5:8088/mall-admin",
  timeout: 5000,
});

instance.interceptors.request.use(
  (config) => {
    // 获取token
    let token = localStorage.getItem("token");
    if (token) {
      config.headers = config.headers || {};
      config.headers["Authorization"] = token;
    }
    return config;
  },
  (err) => Promise.reject(err)
);

instance.interceptors.response.use(
  (res) => {
    const userStore = useUserStore();
    if (res.data.code === 401) {
      // 清除token
      localStorage.removeItem("token");
      // 删除路由
      router.removeRoute("/home");
      //   删除pinia数据
      userStore.menus = [];
      // 跳转到登录
      router.push("/login");
    }
    res.data.code !== 200 && ElMessage.error(res.data.message);
    return res.data;
  },
  (err: AxiosError) => {
    // 如果请求不是200，也需要在这进行处理
    ElMessage.error(`请求出问题了，请联系管理员,错误信息为:${err.message}`);
    // 在一些地方，记录一上你的报错 - 例如：localstorage 之类的 - 具体看你们自己的产品要求你们如何实现
    // 如果是请求失败，比如： 404 就 要在这处理
    Promise.reject(err);
  }
);

export default instance;
